═══ 1. Summary of New Features ═══ I received a great deal of quality feedback from dozens of people that tried previous releases of PMMPEG. Here is a summary of new features that have been implemented based on your suggestions. Please continue to send suggestions and bug reports, it will help to make PMMPEG better for everyone. Click on the links below to get more information on each feature. New Features in PMMPEG 2.1: o Optimized playback speed with I/B/P movies. They play at much higher frame rates and as a side effect the bug with stepping frame by frame in I/B/P movies has been corrected. o Added Slideshow feature. This allows you to select multiple files with the File Dialog, drag/drop multiple files from somewhere on the desktop or specify multiple files on the command line. PMMPEG will then play each movie, one after the other, and optionally loop back to the front of the list and play again if the Loop mode is set. o Added Toolbar buttons that allow you to save the current frame to the Clipboard or to an OS/2 Bitmap file o The Statistics dialog has been replaced by a Status bar that can be optionally displayed at the bottom of the frame. This shows the relevant statistics for the movie: resolution, frame count (for I/B/P and displayed frames) and frame rate in frames/second. o If a decoding problem occurs on a particular frame, the status bar will optionally be displayed with a red background for that frame. o A pop up message will be displayed if the current display configuration is not set up for at least 256 colors This is required for proper display of the images. o Added WS_ANIMATE bit to respect system window animation option. o Update MPEG movie site information. o Added MPEG-2 decoder discussion to help file. o Added DIVE discussion/problems to help file. o Tested increasing color dithering space up from 128 colors but there was not much visual difference and performance suffered. o Optimization: Check and don't change a button if it's already in the required state. o Optimization: Quickly skip initial frames until a non-all-black frame is found. This will always display the first valid frame of any movie. o Optimization: Better frame/second calculation, still mildly optimistic. o Bug fix: Leaves movie positioned at last frame when it ends. o Bug fix: Only one error message on improper end sequence, stops gracefully. o Bug fix: Gets focus on startup as it should. o Bug fix: Fixed memory leaks and optimized internal table use. o Internal: Cleaned up compiler warnings in source, removed dead code. o Internal: Removed frame size calculation hack. New Features in PMMPEG 2.0: o Toolbar with tape controls (Play/Stop/Rewind/Step/Size/Color/Loop) o Accept MPEG filename on command line and automatically play it. o Command line options for playback size, color and looping. o Configuration data saved between runs. o INSTALL.CMD will create a PMMPEG desktop object o INSTALL.CMD will associate PMMPEG with all *.MPG files o Drag/Drop MPEG movie onto PMMPEG. o Double size playback is possible both in Color and Grayscale. o Loading a movie decodes and displays the first valid frame. o When the window is obscured and then revealed, the movie frame is repainted. o New MPEG movie sites added and corrections made to list. o File Dialog always brings up *.MPG. o MPEG filename is now displayed in the Title bar. o Bug fix: no more silent death problem. PMMPEG jumps to the next frame when bad encoding detected. o Bug fix: The file handle is closed when a movie fails parsing as non-MPEG format o Bug fix: Popups are now displayed on fatal read/MPEG stream/parsing errors. ═══ 2. Suggestions for Future Releases ═══ Here is the list of features I was not able to add in time for this release. If you have any more features you'd like to see, please send them to me. I can't promise to eventually implement them all, due to constraints like time, Berkeley decoding engine limitations, etc., but I'll do my best. The list is in a rough order of what I think I'll concentrate on. o I'm considering putting in some nagware or limited functionality due to the amazingly low registration rate vs. the number of copies downloaded. o Implement DIVE interface and overcome color dithering issues. o Save all frames of movie as bitmaps with unique names with a single click. o Move bottom of window when status bar is toggled, instead of top. o Ensure window stays completely on desktop when toggling status or size buttons. o Save bitmaps as RLE, optional as some apps don't like RLE encoding. o Add VideoIN issues to help file. o Add pop-up menus. o Allow color to be dropped on the client background. o Allow priority adjustment. o Display any interesting info from the MPEG header. o REXX hooks for external control of behavior. o Optimize decoding/dithering to improve frame rate. o Overlap display/decode of frames to speed throughput. o Frame back (I frame only). o Play at encoded speed, some movies go too fast. o Better color/256 colors/palette manager. o Scroll bar back and forth across frames. o Pre-parse file and then play back frames. o Bar graph timeline. o Full screen option. o Audio sync. o Make into MMPM/2 codec. o More dithering options. ═══ 3. Toolbar ═══ Use the buttons on the toolbar to control the playback of the movie and select playback options. The buttons on the toolbar have the following functions: o The Play Button causes the movie to start playing. o The Stop Button causes the movie to stop playing. o The Rewind Button causes the movie to be rewound to the first frame, ready for a subsequent Play or Step. o The Step Button button causes the next frame of the movie to be displayed. o The Clipboard Button causes the image of the currently displayed frame to be copied to the OS/2 clipboard. o The File Button causes the image of the currently displayed frame to be saved to an OS/2 bitmap file on disk. The following buttons are in one of two states. o The Small/Large Button can be either in Small or Large mode. - When in the Small state, the movie is played in its normal size, as encoded in the file. - When in the Large state, the movie is played at double the size encoded in the file. o The Color/Gray Button can be either in Color or Grayscale mode. - When in the Color state, the movie is played in 128 distinct color shades. - When in the Gray state, the movie is played in 128 shades of gray. o The NoLoop/Loop Button button can be either in NoLoop or Loop mode. - When in the NoLoop state, the movie is played once and then halts at the end. - When in the Loop state, the movie is played over and over until you click on the Stop button or drag and drop a new movie onto the window. ═══ 3.1. Play Button ═══ The Play button causes the movie to start playing. When the movie starts playing, the Stop button will be enabled and the Rewind and Step buttons will be disabled. o If there is no movie loaded, the button will be in this grayed out state: o If there is a movie loaded and it's not currently playing, the button will be in this enabled state: o If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 3.2. Stop Button ═══ The Stop button causes the movie to stop playing. When the movie stops playing, the Play, Rewind and Step buttons will be enabled. o If there is no movie loaded, the button will be in this grayed out state: o If there is a movie loaded and it's not currently playing, the button will be in this grayed out state: o If there is a movie loaded and it is currently playing, the button will be in this enabled state: ═══ 3.3. Rewind Button ═══ The Rewind button causes the movie to be rewound to the first frame, ready for a subsequent Play or Step. o If there is no movie loaded, the button will be in this grayed out state: o If there is a movie loaded and it's not currently playing, the button will be in this enabled state: o If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 3.4. Step Button ═══ The Step button causes the next frame of the movie to be displayed. If the end of the movie is encountered, it will be rewound to the first frame and stepping can continue without reloading the movie. There is a known problem when using Step with IBP-Frame Movies o If there is no movie loaded, the button will be in this grayed out state: o If there is a movie loaded and it's not currently playing, the button will be in this enabled state: o If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 3.5. Small/Large Button ═══ The Small/Large button toggles back and forth between playback at the normal movie size, as encoded in the file, or at double that size. This button defaults to Small, but can be changed by options on the command line or the configuration data in force when this program was last shut down. Note: You can toggle this while the movie is running and the display will resize itself to ensure that the full movie image is visible. You will see dramatically lower frame rates when playing the movie in Large mode due to the quadrupled number of pixels that have to be moved around in memory and displayed in the window. In Large mode, the movie will appear very "chunky" because each pixel is being magnified 4 times. There's no way to extract a better image out of the movie than its natural encoded size. o When in the Small state , the movie is played in its normal size, as encoded in the file. o When in the Large state, , the movie is played at double the size encoded in the file. ═══ 3.6. Color/Gray Button ═══ The Color/Gray button toggles back and forth between 128 color playback and 128 shades-of-gray playback. This button defaults to Color, but can be changed by options on the command line or the configuration data in force when this program was last shut down. You will usually see slightly better frame rates with Gray than with Color due to the simpler dithering calculations. Also, some movies have "garish" color and selecting gray scale will make them more pleasing to the eye. There is a problem with the Color Table when switching from color->gray or gray->color during playback. Note: You can toggle this while the movie is running and the display will change to the desired color scheme. o When in the Color state , the movie is played in 128 shades of color. o When in the Grayscale state , the movie is played in 128 shades of gray. ═══ 3.7. NoLoop/Loop Button ═══ The NoLoop/Loop button toggles back and forth between playing the movie and looping around to the start and playing again or playing the movie and stopping at the end. This button defaults to NoLoop, but can be changed by options on the command line or the configuration data in force when this program was last shut down. Note: You can toggle this while the movie is running and the movie will behave accordingly when it hits the last frame. o When in the NoLoop state , the movie stops when it hits the last frame. o When in the Loop state , the movie loops around to the start and continues playing when it hits the last frame. ═══ 4. File ═══ Use File to open an MPEG movie. ═══ 4.1. Open ═══ Use Open to display a window that enables you to choose one or more MPEG movies. You can also drag and drop one or more movies from a folder onto the PMMPEG window. ═══ 5. Configuration Data ═══ PMMPEG stores information about itself when you quit so it can try to give you the same environment the next time you run it. o Window position on the desktop is saved and restored, even if maximized or minimized. o Window size is saved and restored. o Small/Large state is saved and restored. o Color/Gray state is saved and restored. o NoLoop/Loop state is saved and restored. o The last directory path a movie is loaded from is saved and restored. If you simply launch PMMPEG without any command line options, these values will be loaded and used to set up the player just like it was when you quit it last. You can use command line options which will override these saved values. ═══ 6. Command Line Options ═══ PMMPEG has been enhanced to take a number of options on the command line, allowing its use as an object on the desktop or as part of a program like Mosaic which attempts to pass the filename of an MPEG movie on the command line. These are the recognized command line options: o -color Color playback, default. o -gray Grayscale playback. o -small Normal frame size, default. o -large Double frame size. o -noloop One play playback, default. o -loop Looping playback. o filename(s) Filename(s) of movies to load and play. If one or more filenames are given on the command line, either by explicitly listing multiple filenames or using a wildcard pattern with * or ?, they will be loaded and play started automatically. Note that the -color and -gray are mutually exclusive, as are -small and -large and also -noloop and -loop. If both of any of these pairs is listed on the command line, the one closest to the end of the command line will take precedence. If any of these options are specified, they will take precedence over the information saved from the last time. Therefore, if you want to be sure that you get a particular option, it's better to explicitly mention it on the command line. ═══ 6.1. -color option ═══ The -color option causes PMMPEG to start up in 128 color mode. ═══ 6.2. -gray option ═══ The -gray option causes PMMPEG to start up in 128 shades of gray mode. ═══ 6.3. -small option ═══ The -small option causes PMMPEG to start up normal size playback mode. ═══ 6.4. -large option ═══ The -large option causes PMMPEG to start up in double size playback mode. ═══ 6.5. -noloop option ═══ The -noloop option causes PMMPEG to start up in play-once-and-stop mode. ═══ 6.6. -loop option ═══ The -loop option causes PMMPEG to start up in continuous loop mode. ═══ 6.7. filename option ═══ The filename option causes PMMPEG to load and start playing that MPEG movie automatically. ═══ 7. Installation ═══ PMMPEG can simply be run in any of the following manners: o On the command line, type pmmpeg with any desired options or MPEG filenames. o Double-click on the PMMPEG object on your desktop. o Double-click on any .MPG files in any folder. The second and third options are enabled for you if you run the INSTALL.CMD REXX program supplied with PMMPEG. ═══ 7.1. INSTALL.CMD ═══ INSTALL.CMD is a REXX program that will create a PMMPEG desktop object for you and set up an association. for any files that end in .MPG. First make sure PMMPEG.EXE and INSTALL.CMD are located in the directory where you are going to keep PMMPEG.EXE. Then type INSTALL at the command line. It will create a desktop object and make the association with all .MPG files on your system. ═══ 7.2. PMMPEG Desktop Object ═══ To get this feature, run the INSTALL.CMD REXX program. This will make a PMMPEG object on your desktop that looks like this: If you double-click on this object, it will launch PMMPEG. You can add any of the command line options you like to the Parameters: field of the Program page of its Settings notebook. ═══ 7.3. .MPG Movie Association ═══ To get this feature, run the INSTALL.CMD REXX program. This will associate PMMPEG with all files ending in .MPG on your system and change their icon to the PMMPEG icon: When you double-click on an MPEG movie, it will launch PMMPEG and automatically start playing the selected movie. ═══ 8. Drag and Drop MPEG Movies ═══ PMMPEG has been designed to allow dragging one or more MPEG movies from a folder on the desktop to the PMMPEG window. If you attempt to drop a non-MPEG movie (i.e. not ending in .MPG) the drop will be rejected. If there is no movie currently playing, then when you drop an MPEG movie it will be automatically loaded and start playing. If there is a movie currently playing, then that movie will stop and the new movie will be automatically loaded and start playing. If there is a movie currently playing, and you attempt to drop a non-MPEG movie then the movie will stop playing. You then have to click on the Play button to continue playing the current movie. ═══ 9. Options ═══ Use Options to show a Status bar with relevant movie statistics or get to the standard sections of the Online Help. ═══ 9.1. Status ═══ Use Status to enable the Status bar at the bottom of the frame window. This will display the size in pixels and real-time statistics on the number of frames processed (for each of the I, B and P frame types), the number of frames truly displayed (shown in the D: field ) and the running frames/second value. Click on the Status menu item again to remove the Status bar. The window will resize itself to accommodate the size of the status bar. The status bar can optionally display an indication of frames with some kind of decoding problem ═══ 9.2. Note Decoding Errors ═══ Use Note Decoding Errors to enable the Status bar at the bottom of the frame window to show which frames of the movie have some kind of decoding problem Each frame that has a decoding error will cause the Status bar to have a red background, which changes back to a gray background on the next correct frame. Click on the Note Decoding Errors menu item again to remove this feature. ═══ Open ═══ Use Open to select one or more MPEG movies: 1. Select the down arrow to the right of the Drive list to display all the drives on your system. 2. Select a drive from the Drive list. 3. Select a directory from the Directory list. 4. Select one or more file names from the File list or type in a filename. 5. Select the Open pushbutton to play the movies you want to view. For a detailed explanation of each field, select from the list below: o Open file name o Type of file o Drive o File o Directory o Open o Cancel ═══ 10. Keys PMMPEG ═══ There is no key specific PMMPEG help. ═══ Open Filename ═══ Type the name of the movie you want to open in the Open filename field. If you include a wildcard character such as * or ?, the file list will be restricted to those filenames that match the pattern. Click on one or more filenames in the list and select the Open pushbutton. ═══ Type of File ═══ Select the down arrow to the right of the Type of file field to display the available file types. ═══ Drive ═══ The Drive list displays the drives on your system. Select the drive that contains the files you want to view. ═══ File ═══ The File list displays all the files that match the current pattern in the Open Filename field. Select one or more files you want to open by clicking with the mouse. Clicking on a selected filename will remove it from the list of selected files. ═══ Directory ═══ The Directory list displays the directories on the selected drive. Select a directory to display the list of files from that directory in the File list box. ═══ Open ═══ Select Open to accept all information in the window, remove the window from the screen and view the movie. ═══ Cancel ═══ Select Cancel to remove the window from the screen without viewing a movie. ═══ 11. PMMPEG ═══ Use PMMPEG to display digital movies conforming to the MPEG-1 specification. PMMPEG can handle both I-Frame only movies and IBP-Frame movies. It cannot currently handle MPEG movies with embedded sounds, MPEG 1 Stream files or MPEG-2 files. Related Information: o Command Line Options o Installation o Desktop Object o MPEG File Association o Toolbar o Status Bar o Slideshow o Saving Individual Frames o Drag/Drop o 256 Colors o Summary of New Features o Suggestions for Future Releases o MPEG File Info o MPEG-2 Info o DIVE Interface Information o Origin of the Code o Movie Sites o Known Bugs o Credits o Author Contact o Registration ═══ 12. MPEG File Info ═══ This program implements the standard described in the Committee Draft ISO/IEC CD 11172 dated December 6, 1991 which is sometimes refered to as "Paris Format." The player expects MPEG-1 video streams only. It can not handle multiplexed MPEG streams or video+audio streams. The player uses the paris entropy coding table set (which we believe to be the MPEG-1 standard), but can not handle any bitstreams that use the "berlin" entropy coding table set. Berlin data is relatively rare so there shouldn't be too much to worry about here, but be aware of the difference when looking for streams to play. XING is a popular DOS/Windows-based MPEG encoder/player that does not take advantage of P or B frames (ie, frames with motion compensation). Performance of the player on XING data is significantly slower (half or less) than the performance when motion compensated MPEG data is decoded. ═══ 13. MPEG-2 Info ═══ There is a new version of MPEG on the block, MPEG-2, otherwise known as ISO/IEC DIS 13818-2. I have experimented with the sample MPEG-2 decoder and found that the visual quality is lacking on MPEG-1 movies that work well with the Berkeley decoding engine. Moving up to an MPEG-2 decoding engine will allow more movies to be played, but at the expense of a clear image on the movies we all know and love. As most movies are still MPEG-1 at this time, I have decided to stick with the Berkeley engine and revisit the MPEG-2 engine at a future date. Here is some information on MPEG-2 from the README file of the MPEG-2 source code package for an encoder and decoder from the MPEG Software Simulation Group. The code can be obtained from ftp.netcom.com in the /pub/cfogg/mpeg2 directory. They maintain a listserver for their code. Email to listserv@netcom.com with message text: subscribe mpeg-users [your E-mail address] MPEG-2 Video is a generic method for compressed representation of video sequences using a common coding syntax defined in the document ISO/IEC 13818 Part 2 (CD: Nov. 1993, DIS: March 1994) by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), in collaboration with the International Telecommunications Union (ITU) as Recommendation H.262. The MPEG-2 concept is similar to MPEG-1, but includes extensions to cover a wider range of applications. The primary application targeted during the MPEG-2 definition process was the all-digital transmission of broadcast TV quality video at coded bitrates between 4 and 9 Mbit/sec. However, the MPEG-2 syntax has been found to be efficient for other applications such as those at higher bit rates and sample rates (e.g. HDTV). The most significant enhancement over MPEG-1 is the addition of syntax for efficient coding of interlaced video (e.g. 16x8 block size motion compensation, Dual Prime, et al). Several other more subtle enhancements (e.g. 10-bit DCT DC precision, non-linear quantization, VLC tables, improved mismatch control) are included which have a noticeable improvement on coding efficiency, even for progressive video. Other key features of MPEG-2 are the scalable extensions which permit the division of a continuous video signal into two or more coded bit streams representing the video at different resolutions, picture quality (i.e. SNR), or picture rates. ═══ 14. DIVE Interface Information ═══ Most newer OS/2 display drivers allow for a technique called DIVE, or Direct Interface Video Extensions. DIVE allows applications to have direct access to the video RAM in the machine. This interface was provided to allow for applications such as the Digital Video player in MMPM/2, and PMMPEG, to directly write images into video RAM. This bypasses the slower but more PM-ish way of bitblitting bitmaps down through the Gpi layer, the Graphics Engine layer and the presentation driver layer to the hardware. IBM has provided sample code to allow applications to use this technique and I incorporated them the same day they were posted on Compuserve. Unfortunately, I have decided against using DIVE in this release of PMMPEG for the following reasons: o DIVE forces you to write the color index of the palette currently loaded in the hardware. I got this working for grayscale but in color mode the colors were way off and I couldn't figure out why. I believe the Berkeley engine is having a hard time dithering to the table of color indexes I set up, but since this doesn't work it's a major reason not to include it. o DIVE does not handle expansion of an image so I would have to double the image by hand in my code, or lose that feature. o Due to the length of time it takes to decode and dither each frame in the movie as compared to the short amount of time it takes to actually get PM to display the frame, I was only seeing 0.5 to 1 frame per second improvement. I need to make serious increases in decoding and dithering performance before DIVE will make a serious difference in the overall frame rate. o DIVE completely writes over whatever is on the screen at that place. This is a problem when you try to pull down the Options menu - DIVE overwrites the menu with the frames as they're decoded and you can't tell what you're selecting from the menu. o You have to have a graphics device driver that has been written to tolerate DIVE and you have to have the SMVDD.SYS driver from MMPM/2 in your CONFIG.SYS for DIVE from an application to work. Most newer drivers will work, but some may not. I will continue to experiment with DIVE and when I solve the color problem, I'll add it in for those that can take advantage of its marginal improvement in frame rate. ═══ 15. Origin of the Code ═══ o Computer Science Division-EECS, Univ. of Calif. at Berkeley. Lawrence A. Rowe, Ketan Patel, and Brian Smith wrote a Unix and X Windows-based MPEG decoder and viewer. This program is based on their version 2.0 release. To get the original source, ftp to toe.cs.berkeley.edu, directory /pub/multimedia/mpeg/mpeg-2.0.tar.Z. These folks have set up several mailing lists for their code. - mpeg-list-dist@CS.Berkeley.EDU General information on the decoder for everyone interested should be sent to this list. This should become active after 11/20/92 - mpeg-list-request@CS.Berkeley.EDU Requests to join or leave the list should be sent to this address. The subject line should contain the single word ADD or DELETE. - mpeg-bugs@CS.Berkeley.EDU Problems, questions, or patches should be sent to this address. o Tom Lane of the Independent JPEG Group provided the basic inverse DCT code used by the Berkeley player. (tom_lane@g.gp.cs.cmu.edu) o John Webb contributed the frame subclass code for the status bar and provided invaluable help when things wouldn't work right. o I, Mike Brown, ported the Unix/X code to OS/2 and Presenation Manager and "integerized" the heavy floating point in the inverse DCT routine. Click to see the Berkley Disclaimer ═══ 16. Berkeley Disclaimer ═══ /* * Copyright (c) 1992 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice and the following * two paragraphs appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ ═══ 17. Movie Sites ═══ You can get MPEG movies from computers around the world. The well-known ones I have found are: o emx.cc.utexas.edu /pub/mnt/mpeg o s2k-ftp.cs.berkeley.edu /pub/multimedia/mpeg/movies o havefun.stanford.edu /pub/mpeg o phoenix.oulu.fi /pub/mpeg o calypso-2.oit.unc.edu /pub/multimedia/animation/mpeg o seds.lpl.arizona.edu /pub/anim o venice.tcp.com /pub/anime-manga/anim/mpeg o alt.binaries.multimedia Internet / Usenet newsgroup ═══ 18. Known Bugs ═══ These bugs are known and are on the list of things to fix in the next release. o Color Table o Bad Encodings o Playback Speed o OS/2 for SMP o Icon Problem ═══ 18.1. Color Table Problem ═══ When switching from color to gray or gray to color while an I-Frame-only movie is playing, you will see a 1 frame distortion of colors. This is a restriction on the way the color table is handled and the proper display of the image will pick up after the color table change completely makes its way through the application. On IBP-Frame movies, it can take a few frames for the image to correct itself, generally until an I frame is encountered. ═══ 18.2. Bad Encodings ═══ Some movies have encoding problems. PMMPEG tries to handle these as best as possible (for example skipping corrupted frames) and continue playing the movie. There are a few distinct cases that will cause the following behaviours in PMMPEG: o PMMPEG may crash either at the initial load of the movie or at some point during playback. o Two movies I have found will get to a certain point in the movie and then rapidly flip back and forth between two adjacent frames and never terminate. o Two movies I have found seem to have a problem with the "vertical hold" as the display looks like a series of jagged diagonal lines. I will work to bulletproof the code, but it also depends on the Berkeley folks to release bug fixes to their engine that will help all platforms. ═══ 18.3. Playback Speed ═══ Movie playback is not real-time. Faster CPU and video cards will help to improve the situation and internal optimization is ongoing. Use grayscale to get the fastest playback, at the expense of losing color. ═══ 18.4. OS/2 for SMP ═══ PMMPEG seems to work well on a beta level of OS/2 for SMP, the version of OS/2 that can run on certain machines that have multiple 486 or Pentium processors. I've seen it randomly crash with a Divide by Zero error. I don't know if it's a bug in the OS/2 product since it was at beta level or in my code. When I get the chance to debug it on a GA level of OS/2 for SMP, I'll try to track this down. ═══ 18.5. Icon Problem ═══ Users of certain ATI graphics cards report that the PMMPEG icon is not being displayed properly, instead a generic OS/2 icon is shown. Since this works properly on other systems including XGA and S3, I suspect it's an ATI driver problem. ═══ 19. Author Contact ═══ Author name: Mike Brown You can reach me in one of the following manners: o mbrown@sescomp.com (or use the syntax required by your system to send Internet email). o SES Computing, Inc. 13206 Jenner Lane Austin, TX 78729-7456 I look forward to reports of new movie sites, new feature requests and of course bug reports. ═══ 20. Registration ═══ Release 1.0 of PMMPEG was distributed as Freeware because it didn't have all of the features that I eventually wanted to include, and I also wanted to gauge the market for such a program. I have decided to distribute Release 2.1 of PMMPEG as Shareware to recoup some of the development, postage and network costs associated with distributing it. The suggested price is $15.00, a bargain at twice the price! If after 30 days of use you decide that PMMPEG is a useful tool, please print out the Registration Form and mail it and the registration fee to the address shown on the form. I have specifically not disabled any features or put in any "nagging" messages, but trust you to "do the right thing" to support development of cheap but useful software in the growing OS/2 environment. I must add here in the 2.1 Release that I'm very disappointed in the registration rate vs. the number of downloads I can see from the two Compserve forums. The program is also at ftp-os2.cdrom.com where I cannot get a count of the download activity but I suspect it is at least as high as the Compuserve activity due to the access cost (nothing) and direct connectivity to anyone at an Internet site. If registrations don't pick up I will be forced to put in some nagware or limit functionality in the unregistered version. For those of you out there that have registered, I thank you for your honesty. As a registered user, you are entitled to a free upgrade to the next release of PMMPEG. You can receive your upgrade in one of the following manners: o Through the post office on a 5м" or 3л" floppy disk. o Through email as a series of UUENCODED email messages. o By ftp from ftp-os2.cdrom.com. Be sure to completely fill out the form so I can keep you up to date. ═══ 20.1. Registration Form for PMMPEG ═══ To print this registration form, click on the Print... button below, make sure 'This Section' is selected and then click on Print. Send $15 (in a check or money order in U.S. funds drawn on a U.S. bank - sorry my bank is VERY cranky!) with this completed form to SES Computing, Inc. 13206 Jenner Lane Austin Texas 78729-7456 Name ______________________________________________ Address ______________________________________________ State/Province ______________________________________________ Country ______________________________________________ Zip/Postal Code ______________________________________________ Internet/Compuserve ______________________________________________ Where did you get PMMPEG? ________________________________________ How would you like to receive your free next release? (Circle one) 5м" Floppy 3л" Floppy UUENCODED Email FTP from ftp-os2.cdrom.com If you circled UUENCODED Email or FTP, be sure to show an email address above to allow me to deliver the new version or notify you by email that a new version is available. Your signature below acknowledges the following: USERS OF PMMPEG MUST ACCEPT THIS DISCLAIMER OF WARRANTY PMMPEG is supplied 'as is'. The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The author assumes no liability for damages, direct or consequential, which may result from the use of PMMPEG. In any case the maximum liability of the seller will be limited exclusively to product replacement or refund of the purchase price. Your signature ______________________________________________ Thank you for registering PMMPEG, Mike Brown. ═══ 21. Credits ═══ Thanks to the following people that used previous PMMPEG releases and sent in valuable suggestions and bug reports! o John Webb o Charles Buck o Dave Conway-Jones o Dzung T. Hoang o Chris Peck o Scott Harper o Kevin Lowey o Fredrik Kvamme o Wey J Ho o Guy McArthur o Que Alexander o Alann Lopes o Ender Wiggin o Chris Herborth o Mike W. Dross o Makoto Nagata o John-Marc Chandonia o Morris Kwok o Rainer Falkner o John VanHoozer o Les Chan o Greg Spath o Murray Penney o Ernst-Walter Joehnk o Keith Brafford ═══ 21.1. Saving Individual Frames ═══ This feature allows you to save the cuurently displayed frame to the Clipboard or as an OS/2 Bitmap file These toolbar buttons are disabled during playback. ═══ 21.2. Clipboard Button ═══ This button allows you to save the curently displayed frame into the clipboard. This allows other OS/2 (and smart Windows) applications to copy the bitmap out of the clipboard for later use. Such apps might allow you to touch up the image or add text to it, then save to any one of many image file formats. o If there is no movie loaded, the button will be in this grayed out state: o If there is a movie loaded and it's not currently playing, the button will be in this enabled state: o If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 21.3. File Button ═══ This button allows you to save the curently displayed frame as a 256 color non-RLE OS/2 bitmap file. It will attempt to generate a unique filename based on the movie filename and the current frame number. If you're saving the file to a FAT formatted partition, the initial filename may have too many characters. Simply shorten the first part of the bitmap filename so it fits the 8.3 naming convention. Subsequent attempts to save the bitmap to a file will use the altered name, replacing the frame number with the new frame number. o If there is no movie loaded, the button will be in this grayed out state: o If there is a movie loaded and it's not currently playing, the button will be in this enabled state: o If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 22. 256 Colors ═══ The dithering engine in PMMPEG requires the hardware be configured to display at least 256 colors or truly awful images are produced. If less than 256 color capability is detected at startup, a message will be displayed to that effect and the program will exit. ═══ 23. Slideshow ═══ This feature allows you to select multiple files using: o The File Dialog You can select multiple files using the File Dialog and they will be played in the order they are shown in the list, not in the order that they were clicked on. o Drag/drop multiple files from somewhere on the desktop You can drag and drop multiple files from anywhere on the desktop. The files will be played in an indeterminate order as the container that you're dragging from will generate the list of files which will not necessarily correspond to the manner in which you selected the files. o Filenames on the command line. You can specify multiple filenames on the command line when you launch PMMPEG. PMMPEG will then play each movie, one after the other, and optionally loop back to the front of the list and play again if the Loop mode is set. If a serious decoding error occurs, the slideshow will halt. You must click on the Play button to continue playing. It's not reccommended that MPEG files with known encoding problems be selected in a slideshow as it will halt playback each time the decoding error occurs.